package com.rybbaby.tss.core.annotation.validator;

import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import com.rybbaby.tss.core.verifier.AbstractVerifier;

/**
 * @description 验证器注解
 * 
 * @author 谢进伟
 * 
 * @createDate 2016年3月29日 下午4:25:23
 */
@Inherited
@Target({ElementType.FIELD , ElementType.PARAMETER , ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Validator{
	
	/**
	 * 验证器
	 * 
	 * @return
	 */
	public Class<? extends AbstractVerifier> [] verifier();
	
	/**
	 * 错误反馈信息
	 * 
	 * @return
	 */
	public String message() default "Invalid format of parameter values!";
	
	/**
	 * 正则表达式
	 * 
	 * @return
	 */
	public String regex() default "^.*$";
	
	/**
	 * 最小值
	 * 
	 * @return
	 */
	public int minValue() default Integer.MIN_VALUE;
	
	/**
	 * 最大值
	 * 
	 * @return
	 */
	public int maxValue() default Integer.MAX_VALUE;
	
	/**
	 * 最小长度
	 * 
	 * @return
	 */
	public int minLen() default Integer.MIN_VALUE;
	
	/**
	 * 最大长度
	 * 
	 * @return
	 */
	public int maxLen() default Integer.MAX_VALUE;
	
	/**
	 * 是否包含边界值
	 * 
	 * @return
	 */
	public boolean inclusive() default true;
	
	/**
	 * 格式
	 * 
	 * @return
	 */
	public String format() default "";
}
